#字符串表示： '' ""  ''' '''  """ """
from dataclasses import replace

from fontTools.subset.svg import xpath

#使用单引号给字符串赋值
str = '信阳科技职业学院'
#使用双引号给字符串赋值
address = "信阳市平桥区适合南路东段2号"
#使用三引号实现多行赋值
introduction = '''
大数据与人工智能学院、
智能制造学院、
智慧电商学院、
学前教育学院、
艺术设计与工程技术学院
'''
print(str)
print(address)
print(introduction)


#表示出引号的方法

#''可以内含双引号
str1 = '"python"'
#""可以内含单引号
str2 = "'best'"


#如果想表示引号 可以使用 \ 转义特殊字符来解除引号效用，变成普通字符串
#使用转义字符\实现引号的转义
str3 = "\"hello world\""
str4 = "\'hello world\'"

print(str1)
print(str2)
print(str3)
print(str4)

print('Hello\\World!')  #\\代表反斜线-->\
print('Hello\'World!')
print("hello\" world!")
print("hello\n world!",end=",")  #\n换行, end=","表示不换行，以逗号结尾


print('\n')

#————————————————   字符串的运算   ————————————————
#字符串操作符：in、空格、加星和逗号。
#in操作符:判断一个字符串是否包含另一个字符串,如果包含返回True,否则返回False
x="abcdef"
print('a' in x )

#空格操作符：用于连接两个字符串
print('a' 'b' 'c')
#+操作符：用于连接两个字符串
print('a'+'b'+'c')

#*操作符：用于重复一个字符串
print('a'*3)

#逗号操作符：用于连接两个字符串，逗号操作符会在两个字符串之间添加一个空格
x='abc','3'
print(x,type(x))

#字符串的索引 从0开始，最后一个字符的索引是-1
x='abcdef'
print(x[0])
print(x[1])
#索引可获得指定位置的单个字符，但不能通过索引来修改字符串。因为字符串对象不允许被修改！
#x[1]='x'  #TypeError: 'str' object
# 可以通过切片来修改字符串（重组字符串）
# x='abcdef'
# x=x[:1]+'x'+x[2:]
# print(x)


#字符串的切片
#切片操作符：用于获取字符串的一部分,0是第一个字符，-1或者len-1是最后一个字符
x = 'abcdef'
#切片的默认开始从0开始，默认结束到len
print(x[1:4])  #返回索引值为1到3的字符
print(x[1:])  #返回从索引值1到字符串末尾的字符，相当于[1:6]
print(x[:4])  #返回从字符串开头到索引值3的字符
print(x[:-1])  #除最后一个字符外，其它字符全部返回,相当于[0:5]
print(x[-1:])  #只返回最后一个字符,相当于[5:6]
print(x[:])  #返回全部字符[0:6]




print('\n')
#字符串的方法
#字符串的方法是字符串对象的内置函数，可以通过字符串对象调用方法来实现字符串的操作。
#len():返回字符串的长度
x='abcdef'
print(len(x))

#count():返回字符串中指定字符的个数
x='abcdef'
print(x.count('a'))
print(x.count('a',2))  #返回索引值为2之后的字符中'a'的个数

#endswith():判断字符串是否以指定的字符串结尾
x='abcdef'
print(x.endswith('a'))

#startswith():判断字符串是否以指定的字符串开头
x='abcdef'
print(x.startswith('a'))

#find():返回字符串中指定字符的索引值，如果没有找到返回-1
x='abcdef'
print(x.find('a'))
print(x.find('p'))

#index():与find方法相同，只是在没有找到子字符串sub时产生ValueError异常。
x='abcdef'
print(x.index('a'))
#print(x.index('p'))  #ValueError: substring

#strip():删除字符串两端的空格，如果指定参数，则删除两端的指定字符
x = ' abcd,eafa '
print(x.strip())
y = 'abcdefg,kkkk,lloo'
print(y.strip("a"))

#replace():替换字符串中的指定字符
x = ' abcd,eafa '
print(x.replace(',','a'))

#split():按照sep指定的分隔符拆分字符串，返回包含拆分结果的列表.省略sep时，使用空格作为分隔符
x = ' abcd,eafa '
print(x.split(','),type(x.split(',')))

print('\n')


#----字符串的格式化----   %s %d %f %x
#格式化操作符：%s字符串 %d整数 %f浮点数 %.nf浮点数保留n位小数 %.nf%%表示百分数 %x十六进制整数
name = "zhangsan"
age = 18
print("My name is %s and I am %d years old." % (name, age))
product = "apple"
price = 5.62
print("The price of one %s is ￥%.2f." % (product, price))
gw = 0.145
print("Growth rate:%.2f%%" %(gw * 100)) #两个%表示一个%


#----字符串的格式化----   .format()方法
name = "zhangsan"
age = 18
print("My name is {} and I am {} years old.".format(name, age))
product = "apple"
price = 5.62
print("The price of one {} is ￥{}".format(product,price))
pi = 3.141592653589793
print("pi rounded to decimal is {:.3f}".format(pi))
gw = 0.145
print("Growth rate:{:.2%}".format(gw)) #.2%表示保留两位小数的百分数

#----字符串的格式化----   f-string
name = "zhangsan"
age = 18
print(f"My name is {name} and I am {age} years old.")
product = "apple"
price = 5.62
print(f"The price of one {product} is ￥{price}")
pi = 3.141592653589793
print(f"pi rounded to decimal is {pi:.2f}") #{}内可以使用格式化操作符 ,:后面是格式化操作符
gw = 0.145
print(f"Growth rate:{gw:.1%}") #.1%表示保留一位小数的百分数


